﻿namespace MyCSharpWork3
{
    internal class Program
    {

    
        static void Main(string[] args)
        {
            //定初始日期为2022年1月1日
            DateTime datetime = new DateTime(2022, 1, 1);
            int x = 0, y = 0, z = 0;
            const int monthwide = 35;
            const int monthheight = 10;
            do
            {
                if (datetime.Day == 1)
                {
                    //将147、258、369分别放在三列
                    x = ((datetime.Month - 1) % 3) * monthwide;
                    //将123、456、789分别放在y=0，y=10，y=20，y=30这三行
                    y = (datetime.Month - 1) / 3 * monthheight;
                    //输出月份
                    Console.SetCursorPosition(x, y);
                    Console.Write("{0,12}月", datetime.Month);
                    //隔一行输出“日一二三四五六”
                    Console.SetCursorPosition(x, y + 1);
                    Console.Write("日  一  二  三  四  五  六");
                    //指定一周中的星期几，并转化为整形
                    z = Convert.ToInt32(datetime.DayOfWeek);
                }
                int dayofweek = Convert.ToInt32(datetime.DayOfWeek);
                //确定具体日期的位置，其中math.ceiling函数为进一法去小数部分 math.floor为去尾法去小数部分
                Console.SetCursorPosition(x + dayofweek * 4, y + (int)Math.Ceiling((datetime.Day - 7 + z) / 7.0) + 2);
                Console.Write("{0,2}", datetime.Day);
                //天数加一继续循环
                datetime = datetime.AddDays(1);
            } 
            //当年份加到2023时终止循环
            while (datetime.Year == 2022);
            Console.ReadKey();
        }
    }
}
